home *** CD-ROM | disk | FTP | other *** search
- 1 ' Program : SPIROGRAPH
- 2 ' Author : Ned Mazerall & Dennis Bayomi
- 3 ' IBM PC User Group of Winnipeg
- 4 ' Pupose : To draw spirographs using the
- 5 ' hypocycloid eqautions.
- 6 '
- 7 DEF FNX(T)= 320+7*J/C*(N*COS(T+F)+TR*COS(H*T+F))
- 8 DEF FNY(T)= 100+3*J/C*(N*SIN(T+F)-TR*SIN(H*T+F))
- 9 '
- 10 INPUT "Radius of FIXED circle : ",R1
- 20 INPUT "Radius of ROLLING circle : ",R2
- 30 INPUT "Radius of TRACING point : ",TR
- 40 INPUT "Tracing Point INCREMENT : ",TRI
- 50 INPUT "INITIAL Size Factor : ",C
- 60 INPUT "FINAL Size Factor : ",EX
- 70 INPUT "Phase INCREMENT (about .1) : ",PF
- 80 INPUT "Size Factor INCREMENT : ",ST1
- 90 INPUT "Parameter (T) INCREMENT : ",ST2
- 100 '
- 110 SCREEN 2 : CLS
- 120 PI= 3.141593 : GOSUB 290
- 130 G = (R1+R2)/R2 : M = R1+R2 : ' Epicycloid
- 140 H = (R1-R2)/R2 : N = R1-R2 : ' Hypocycloid
- 150 FOR J=1 TO EX STEP ST1
- 160 F = F + PF : T = 0
- 170 X = FNX(T) : Y = FNY(T)
- 180 FOR T=0 TO 2*D*PI+.1 STEP ST2
- 190 X1 = FNX(T) : Y1 = FNY(T)
- 200 LINE (X,Y)-(X1,Y1)
- 210 X = X1 : Y = Y1
- 220 A$ = INKEY$ : IF A$ = CHR$(27) THEN 270
- 230 NEXT
- 240 TR = TR +TRI
- 250 NEXT : BEEP
- 260 A$= INKEY$ : IF A$ = "" THEN 260
- 270 SCREEN 0 : WIDTH 80
- 280 END
- 290 ' *** Least Common Multiple (LCM)
- 300 GOSUB 320 : LCM = R1*R2/GCD : D = LCM/R1
- 310 RETURN
- 320 ' *** Greatest Common Divisor (GCD)
- 330 X = R1 : Y = R2
- 340 R = X MOD Y : IF R <> 0 THEN X=Y : Y=R : GOTO 340
- 350 GCD = Y
- 360 RETURN